1. Field of the Invention
The present invention relates to a method of constructing useful displays of partially ordered information. More specifically, the present invention relates to a method of constructing a display of partially ordered information from distributed systems and other types of systems with parallel or concurrent processing characteristics to assist a user in understanding and/or debugging such systems. The present invention also relates to a display system for displaying partially ordered information and, more specifically, to a display system to assist a user in understanding and/or debugging distributed systems and other types of systems with parallel or concurrent processing characteristics.
2. Description of the Prior Art
Debuggers for sequential programs are known. Such debuggers typically gather and display information which may be useful in determining the location and/or cause of errors (bugs) in a program. Debugging information may include the values assigned to variables at various points in the execution of the program and/or the execution path of the program (which functions are entered and exited at which times or which program instructions are being executed), etc.
However, debuggers designed for use with sequential programs are not very suitable for use with programs executing concurrently, such as on distributed systems. Unlike sequential systems wherein a program is sequentially executed, one instruction after another, programs executing on parallel or distributed systems typically comprise one or more processes each of which may be performed concurrently. These processes may interact with one another either synchronously, asynchronously or both, and these interactions and failed interactions, typically referred to as "events", form an important part of the information required to understand and/or debug a program executing on such a system. Similar problems can arise in attempting to trace events in other types of computing environments exhibiting concurrent processing characteristics.
Adding the capacity to known sequential debuggers to deal with these events is not a simple task as, unlike the sequential case, a concurrent system does not have a "total order" of events. Specifically, as processes in either a parallel or distributed system may execute concurrently and under different clocks (especially in geographically distributed systems), there is no simple, absolute, sequential order (total order) which may be assigned to the events. At best, the order of events within a process and the inter-relationship between events in different processes may be defined as a partial order, i.e. event A preceded event B as event B could not start until event A was completed, either because the events are directly related or because of a relationship between the events and one or more other events. A simple example of this may be that event A is responsible for creating a file on a storage medium while event B is responsible for reading the contents of that file.
Unfortunately, while prior attempts have been made to produce debuggers suitable for use with concurrent systems, in these prior art systems the display of partially ordered debugging information has been non-intuitive and often misleading to the user.